MongoDB একটি NoSQL ডেটাবেস, যা স্কিমা-লেস (schema-less) সিস্টেম হিসেবে পরিচিত। এর মানে হল, এখানে ডেটার মধ্যে কোন নির্দিষ্ট স্কিমা বা কাঠামো থাকা বাধ্যতামূলক নয়। তবে, বাস্তব ক্ষেত্রে ডেটার গুণগত মান এবং কাঠামো নিশ্চিত করার জন্য কিছু ধরণের স্কিমা ভ্যালিডেশন প্রয়োজন। MongoDB তে দুই ধরনের স্কিমা ভ্যালিডেশন কৌশল ব্যবহার করা যায়: Dynamic Schema Validation এবং Static Schema Validation।
Dynamic Schema Validation
ডাইনামিক স্কিমা ভ্যালিডেশন MongoDB তে এমন একটি কৌশল, যেখানে আপনি ডেটাবেসে প্রবেশ করার সময় ডেটা চেক করেন এবং যাচাই করেন যে তা পূর্বনির্ধারিত নিয়ম বা কন্ডিশন পূরণ করছে কিনা। এটি MongoDB তে JSON Schema Validation এর মাধ্যমে কার্যকর করা হয়। এর মাধ্যমে ডেটাবেসে ইনসার্ট বা আপডেট করার সময় ডেটার ধরন, প্রকার বা কাঠামো পরীক্ষা করা হয়।
Dynamic Schema Validation কিভাবে কাজ করে?
MongoDB তে ডাইনামিক স্কিমা ভ্যালিডেশন সেটআপ করার জন্য, validation অপশন ব্যবহার করা হয়। এটি একটি validator ফিল্ডের মাধ্যমে নির্ধারণ করা হয়।
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("users");
// Define Validation Rule using JSON Schema
Document validationRule = new Document()
.append("validator", new Document("$jsonSchema", new Document()
.append("bsonType", "object")
.append("required", Arrays.asList("name", "age"))
.append("properties", new Document()
.append("name", new Document("bsonType", "string"))
.append("age", new Document("bsonType", "int"))
)));
// Create collection with validation rule
database.createCollection("users", new CreateCollectionOptions().validationOptions(validationRule));
এখানে, validator প্যারামিটার JSON স্কিমা থেকে ডেটা যাচাই করার নিয়ম তৈরি করে। ডাইনামিক স্কিমা ভ্যালিডেশন ডেটা ইনসার্ট বা আপডেট করার আগে তার কাঠামো যাচাই করে।
Dynamic Validation এর সুবিধা
- উন্নত ডেটা গুণগত মান: ডেটা সঠিক কাঠামো অনুসরণ করে প্রবাহিত হয়।
- পদক্ষেপে কন্ট্রোল: ডেটার যেকোন পরিবর্তন এবং ইনসার্ট আগেই স্কিমা চেক করা হয়।
Static Schema Validation
স্ট্যাটিক স্কিমা ভ্যালিডেশন MongoDB তে এমন একটি কৌশল, যেখানে ডেটাবেসের মধ্যে নির্দিষ্ট কাঠামো বা স্কিমা স্থিরভাবে প্রতিষ্ঠিত থাকে। যদিও MongoDB মূলত স্কিমা-লেস, স্ট্যাটিক স্কিমা ভ্যালিডেশন ব্যবহার করে আপনি কোডের মাধ্যমে ডেটাবেসে আগত ডেটার কাঠামো নির্ধারণ এবং যাচাই করতে পারেন। এখানে আপনি বাইরের লাইব্রেরি বা ফ্রেমওয়ার্ক ব্যবহার করে ডেটার ধরন বা প্রপার্টি যাচাই করতে পারেন, যেমন Mongoose (যা একটি জনপ্রিয় MongoDB লাইব্রেরি Node.js এর জন্য)।
Static Schema Validation কিভাবে কাজ করে?
স্ট্যাটিক স্কিমা ভ্যালিডেশন সাধারণত ডেটা ইনসার্ট করার আগে কোডের মধ্যে বিভিন্ন কন্ডিশন বা ফাংশন ব্যবহার করে সম্পাদিত হয়। উদাহরণস্বরূপ, Java MongoDB ড্রাইভার ব্যবহার করে, আপনি স্কিমা যাচাই করার জন্য বিভিন্ন কাস্টম কন্ডিশন তৈরি করতে পারেন।
// Using custom validation before insert
Document doc = new Document("name", "John")
.append("age", 25);
// Check if age is valid
if(doc.getInteger("age") < 18) {
System.out.println("Invalid age.");
} else {
collection.insertOne(doc);
}
এখানে, ডেটা ইনসার্ট করার আগে কিছু কাস্টম ভ্যালিডেশন কোড ব্যবহার করা হয়েছে, যেমন বয়স যদি ১৮ এর কম হয়, তবে সেটি ইনসার্ট হবে না।
Static Validation এর সুবিধা
- কাস্টম রুলস: আপনার প্রয়োজন অনুযায়ী স্কিমা এবং ভ্যালিডেশন রুলস ডিজাইন করা সম্ভব।
- অন্য ধরনের চেকিং: MongoDB তে মুলত স্ট্যাটিক স্কিমা ভ্যালিডেশন নির্দিষ্ট কাস্টম চেকিং এর জন্য উপকারী।
Dynamic এবং Static Schema Validation এর মধ্যে পার্থক্য
| ফিচার | Dynamic Schema Validation | Static Schema Validation |
|---|---|---|
| স্কিমা চেক | ডেটাবেস লেভেলে চলে | কোড লেভেলে চলে |
| ব্যবহার | MongoDB তে JSON Schema এর মাধ্যমে | কোডে কাস্টম চেকিং |
| সুবিধা | সহজ সেটআপ, উন্নত কন্ট্রোল | কাস্টমাইজেশন এবং নির্দিষ্ট যাচাই |
| প্রয়োগের উপযোগী ক্ষেত্রে | ডেটা কাঠামোর সঠিকতা নিশ্চিত করা | ফাংশনাল বা নির্দিষ্ট চেকিং |
এভাবে, MongoDB তে ডাইনামিক এবং স্ট্যাটিক স্কিমা ভ্যালিডেশন দুটি পৃথক কৌশল যা ডেটার গুণগত মান নিশ্চিত করতে সাহায্য করে। আপনি কোনটি ব্যবহার করবেন, তা নির্ভর করে আপনার প্রয়োজনীয়তা এবং অ্যাপ্লিকেশনের ধরনে।
Read more